﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;


namespace OrderManager
{
    public partial class Statistics : Form
    {
        



        public Statistics()
        {
            InitializeComponent();


            Dictionary<string, int> summary = new Dictionary<string,int>();
            int totalIncome = 0;
            StreamReader input;
            
            
            try
            {
                input = File.OpenText("Orders.txt");

                while (!input.EndOfStream)
                {
                    
                    string filename;                    
                    filename = input.ReadLine();
                    

                    StreamReader source = File.OpenText(@"orders\" + filename + ".txt");


                    // A dátumig 5 sort kell beolvasni
                    string tmp;
                    for (int i = 0; i < 4; ++i)
                        tmp = source.ReadLine();


                    // A dátum feldolgozása
                    // A dátum sorát a cikluson kívül kell olvasni, különben fordítási hiba lesz azért,
                    // mert a fordító szerint nem biztos, hogy a következőkben a tmp-nek lesz értéke
                    tmp = source.ReadLine();
                    tmp = tmp.Split(':')[1].TrimStart();
                    DateTime tmpDate = DateTime.Parse(tmp);

                    if (!(tmpDate.Year == DateTime.Now.Year && tmpDate.Date.Month == DateTime.Now.Month))
                        continue;


                    // Még 5 sort kell olvasni, hogy az ár sorában legyünk
                    for (int i = 0; i < 5; ++i)
                        tmp = source.ReadLine();


                    // Az ár sorának formátuma:
                    // Végösszeg: 8040 Ft
                    tmp = tmp.Split(' ')[1];
                    try
                    {
                        totalIncome += int.Parse(tmp);
                    }
                    catch (Exception exc)
                    {
                        MessageBox.Show("A bemeneti fájl sérült vagy nem olvasható. A rendelés végösszege érvénytelen formátumban van.");
                        source.Close();
                        input.Close();
                        this.Close();

                        return;
                    }

                    // A megrendelt ételek listájának kezdetéig 3 sort kell olvasni
                    for (int i = 0; i < 3; ++i)
                        tmp = source.ReadLine();

                    while (!source.EndOfStream)
                    {
                        string name = source.ReadLine();
                        if (summary.ContainsKey(name))
                            summary[name]++;
                        else
                            summary.Add(name,1);
                    }


                    source.Close();
                }

                input.Close();
            }
            catch (Exception exc)
            {
                MessageBox.Show("A rendeléseket tartalmazó fájl sérült vagy nem olvasható.\nBővebb információ:\n" + exc.Message);

                this.Close();
                return;
            }

            this.statisticsBox.AppendText("Összesített havi bevétel: " + totalIncome + " Ft\n\n");
            for (int i = 0; i < summary.Count; ++i)
            {
                this.statisticsBox.AppendText(summary.Keys.ElementAt(i) + ": " + summary[summary.Keys.ElementAt(i)] + " db\n");
            }

            return;
        }

        private void SaveToFile(object sender, EventArgs e)
        {
            try
            {
                if (!Directory.Exists("Statistics"))
                    Directory.CreateDirectory("Statistics");

                string filename = DateTime.Now.Year.ToString() + '.' + DateTime.Now.Month.ToString() + ".txt";

                StreamWriter output = File.CreateText(@"Statistics\" + filename);
                foreach (string str in this.statisticsBox.Lines)
                    output.WriteLine(str);

                output.Flush();
                output.Close();

                MessageBox.Show("A kimutatás elmentve a Statistics mappába " + filename + " néven.");
                this.Close();

                return;
            }
            catch (Exception exc)
            {
                MessageBox.Show("Hiba történt a kimutatás elmentésekor.\nHibaüzenet:\n" + exc.Message);

                this.Close();
                return;
            }
        }
    }
}
